Pseudo-random number generation
From Cppreference
Contents |
[edit] Random number engines
Random number engines generate pseudo-random numbers using seed data as entropy source. Several different classes of pseudo-random number generation algorithms are implemented as templates that can be customized.
| Defined in header
<random> | |||
| implements linear congruential algorithm (class template) | ||
| implements Mersenne twister algorithm (class template) | ||
| implements subtract with carry (a lagged Fibonacci) algorithm (class template) | ||
[edit] Random number engine adaptors
Random number engine adaptors generate pseudo-random numbers using another random number engine as entropy source.
| Defined in header
<random> | |||
| discards some output of a random number engine (class template) | ||
| packs the output of a random number engine into blocks of specified number of bits (class template) | ||
| delivers the output of a random number engine in different order (class template) | ||
[edit] Predefined random number generators
Several specific popular algorithms are predefined.
| Defined in header
<random> | |
| Type | Definition |
| minstd_rand0 | linear_congruential_engine<uint_fast32_t, 16807, 0, 2147483647> |
| minstd_rand | linear_congruential_engine<uint_fast32_t, 48271, 0, 2147483647> |
| mt19937 | mersenne_twister_engine<uint_fast32_t, 32, 624, 397, 31, 0x9908b0df, 11, |
| mt19937_64 | mersenne_twister_engine<uint_fast64_t, 64, 312, 156, 31, 0xb5026f5aa96619e9, 29, |
| ranlux24_base | subtract_with_carry_engine<uint_fast32_t, 24, 10, 24> |
| ranlux48_base | subtract_with_carry_engine<uint_fast64_t, 48, 5, 12> |
| ranlux24 | discard_block_engine<ranlux24_base, 223, 23> |
| ranlux48 | discard_block_engine<ranlux48_base, 389, 11> |
| knuth_b | shuffle_order_engine<minstd_rand0, 256> |
| default_random_engine | implementation-defined |
| non-deterministic random number generator using hardware entropy source (class) | |
[edit] Random number distributions
Random number distributions are post-process the output of an random number engine or adaptors in such a way, that resulting output fits into some statistical probability distribution.
| Defined in header
<random> | |||
Uniform distributions | |||
| evenly distributes integer random numbers across a range (class template) | ||
| evenly distributes floating-point random numbers across a range (class template) | ||
| evenly distributes floating-point random numbers of given precision across [0, 1) (function template) | ||
Bernoulli distributions | |||
| Produces bool values on a Bernoulli distribution. (class) | ||
| Produces integer values on a binomial distribution. (class template) | ||
| Produces integer values on a negative binomial distribution. (class template) | ||
| Produces integer values on a geometric distribution. (class template) | ||
Poisson distributions | |||
| Produces integer values on a poisson distribution. (class template) | ||
| Produces real values on an exponential distribution. (class template) | ||
| Produces real values on an gamma distribution. (class template) | ||
| Produces real values on a Weibull distribution. (class template) | ||
| Produces real values on an extreme value distribution. (class template) | ||
Normal distributions | |||
| Produces real values on a standard normal (Gaussian) distribution. (class template) | ||
| Produces real values on a lognormal distribution. (class template) | ||
| Produces real values on a chi-squared distribution. (class template) | ||
| Produces real values on a Cauchy distribution. (class template) | ||
| Produces real values on a Fisher's F-distribution. (class template) | ||
| Produces real values on a Student's t-distribution. (class template) | ||
Sampling distributions | |||
| Produces random integers on a discrete distribution. (class template) | ||
| Produces real values distributed on constant subintervals. (class template) | ||
| Produces real values distributed on defined subintervals. (class template) | ||
[edit] Predefined seed sequence generators
| Defined in header
<random> | |||
| general-purpose bias-eliminating scrambled seed sequence generator (class) | ||
[edit] C library
| Defined in header
<cstdlib> | ||
| generates a pseudo-random number (function) | |
| initializes pseudo-random number generator (function) | |
| maximum possible value generated by rand() (macro constant) | |